import type {Router} from 'vue-router'
import {useAuthStore} from '@/stores/modules/auth'

export function setupRouterGuards(router: Router) {
    router.beforeEach(async (to, _from, next) => {
        const auth = useAuthStore()

        // 初始化认证状态（如果还未初始化）
        if (auth.token && !auth.user) {
            try {
                await auth.fetchCurrentUser()
            } catch (error) {
                console.warn('Failed to fetch user info:', error)
                await auth.logout()
            }
        }

        // 检查是否需要认证
        if (to.meta.requiresAuth && !auth.isLoggedIn) {
            next({
                path: '/login',
                query: {redirect: to.fullPath}
            })
            return
        }

        // 检查是否为游客页面（已登录用户不应访问）
        if (to.meta.requiresGuest && auth.isLoggedIn) {
            next('/')
            return
        }

        // 检查是否需要管理员权限
        if (to.meta.requiresAdmin && auth.user?.userRole !== 'admin') {
            next('/')
            return
        }

        // 设置页面标题
        if (to.meta.title) {
            document.title = `${to.meta.title} - 栖云图库`
        } else {
            document.title = '栖云图库'
        }

        next()
    })
}
